import store from '@/store'
import { Message } from 'element-ui'

// 指令名 = 指令内容对象
// 图片加载失败受损或者没有图，用占位功能
export const imgpix = {
  inserted (el, binding) {
    if (el.src) {
      el.onerror = function () {
        // 当图片出现异常的时候 会将指令配置的默认图片设置为该图片的内容
        el.src = binding.value || require('@/assets/img/load-error.png') // 这里不能写死
      }
    } else {
      // 如果没有配置src，且使用该指令可以实现默认图
      el.src = binding.value || require('@/assets/img/empty.png')
    }
  }
}

// 按钮权限指令
export const permission = {
  bind (el, binding, vnode) {
    const mark = binding.value
    if (!mark) {
      return new Error('请输入权限标识')
    }
    // 超级权限
    if (store.getters.permission_btn_list[0] === '*') return
    // 其他权限
    const idx = store.getters.permission_btn_list.findIndex(val => val.mark === mark)
    if (idx > -1) return
    // 禁用 click 兼容性检测
    if (!vnode.componentInstance) return alert('v-permission 不支持用在普通dom元素')
    if (vnode.data.nativeOn && vnode.data.nativeOn.click) return alert('v-permission 不支持 click.native')
    // 禁用点击事件(组件）
    if (vnode.componentInstance) vnode.componentInstance.$off('click')
    el.onclick = function (e) {
      e.preventDefault()
      e.stopPropagation()
      Message.error('您无权进行此操作')
    }
  }
}
